package rpc

import (
	"fmt"
	"google.golang.org/grpc"
	"net"
	"zsc-boot/core"
)

const grpcServerConfKey = "grpc-server"

type Server struct {
	Port uint `mapstructure:"port"`
}

var (
	defaultGrpcServer *grpc.Server
)

func Start() {
	//获取配置
	conf, err := core.Conf[Server](grpcServerConfKey)
	if err != nil {
		panic(err)
	}

	lis, err := net.Listen("tcp", fmt.Sprintf(":%d", conf.Port))
	if err != nil {
		panic(err)
	}

	fmt.Println("rpc server started")
	if err = GetGrpcServer().Serve(lis); err != nil {
		panic(err)
	}
}

func GetGrpcServer() *grpc.Server {
	if defaultGrpcServer != nil {
		return defaultGrpcServer
	}
	defaultGrpcServer = grpc.NewServer()
	return defaultGrpcServer
}
